package org.ping.Tool;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

import org.ping.news.StorageNew;

/**
 * @author PING
 * 爬取的新闻储存在这个类
 */
public class NewsUtil {
	//单例模式
	private NewsUtil() {}
	
	private static NewsUtil newsu = new NewsUtil();
	
	public static NewsUtil getNewsUtil() {
		return newsu;
	}
	
	//储存标题和链接
	//储存的是一次性获取的50条新闻
	//每次推送的10条新闻
	private Map<String,StorageNew> detaMap = new LinkedHashMap<String,StorageNew>();
	//储存在这里。。。一次性获取在这里
	public Map<String,StorageNew> news = new LinkedHashMap<String,StorageNew>();
	
	//获取所有新闻标题链接
	//传进来页数
	//返回10条数据
	public Map getTitle(int page) {
		//清空上一次的内容
		detaMap.clear();
		//根据客户端发送过来的页数，判断出是从哪里开始推送
		int Max = page * 10;		//最大的一条
		int Min = Max-10;			//最小的一条
		//获取所有新闻的集合
		Set<String> set = news.keySet();
		Iterator<String> iter = set.iterator();
		String key;
		//这里是为了做分页
		int num = 0;
		while (iter.hasNext()) {
			
			//如果，num大于或等于最小的值，并且小于等于最大的之，那么就获取10条新闻
			key = iter.next();
			if(num>=Min && num<Max) {
				
				//截取一部分数据，提供给首页的预览
				//使用对象克隆去提供首页的数据
				StorageNew stor = (StorageNew) news.get(key).clone();
				String content = stor.getContent();
				
				if(stor.getContent().length()>120) {					
					stor.setContent(content.substring(0, 120));
				}
				detaMap.put(key, stor);
			}
			num++;
			if(num>Max) {
				break;
			}
		}
		return detaMap;
	}
	
	//推送单条新闻的详细信息到servlet
	public StorageNew getNewInfo(String id) {
		return news.get(id);
	}
	
	
}
